package top.infopub.mgr.mkt.dao;


import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import top.infopub.generic.GenericDao;
import top.infopub.model.mkt.ProProcessDetail;

import java.util.List;


/** 项目流程明细表(MKT_PRO_PROCESS_DETAIL) **/
@Repository
public interface ProProcessDetailDao extends GenericDao<ProProcessDetail, String> {
    /**
     * 根据proCode查询项目流程明细信息
     * @param proCode
     * @return
     */
    List<ProProcessDetail> queryByProCode(@Param("proCode") String proCode);

    /**
     * 根据流程Id查询项目流程明细
     * @param processId
     * @return
     */
    ProProcessDetail queryByProcessId(@Param("processId") String processId);

    /**
     * 查询项目当前最大节点
     * @param proCode
     * @return
     */
    ProProcessDetail queryProThisType(@Param("proCode") String proCode);

    /**
     * 更新业务表流程Id
     * @param tableName 表名
     * @param processStatus 流程状态，1=审核中，9=审核通过，10=审核终止
     * @param processId 流程ID
     * @param sguid 业务表Id
     */
    void modifyProcessStatusBySguid(@Param("tableName") String tableName,
                                    @Param("processStatus") String processStatus,
                                    @Param("processId") String processId,
                                    @Param("sguid") String sguid);

    /**
     * 更新项目流程明细信息流程状态
     * @param processStatus 流程状态，1=审核中，9=审核通过，10=审核终止
     * @param processId 流程ID
     */
    void modifyProcessStatus(@Param("processStatus") String processStatus, @Param("processId") String processId);

    /**
     * 更新业务表流程Id
     * @param tableName 表名
     * @param processStatus 流程状态，1=审核中，9=审核通过，10=审核终止
     * @param processId 流程ID
     * @param proCode 项目全局唯一编码
     */
    void modifyProcessStatusByProCode(@Param("tableName") String tableName,
                                      @Param("processStatus") String processStatus,
                                      @Param("processId") String processId,
                                      @Param("proCode") String proCode);

    /**
     * 根据Id查询
     * @param tableName
     * @param id
     * @return
     */
    String queryProCodeById(@Param("tableName") String tableName, @Param("id") String id);

    /**
     * 更新是否继续跟踪标识
     * @param isTrack
     * @param proCode
     */
    void modifyProInfoIsTrack(@Param("isTrack") String isTrack, @Param("proCode") String proCode);

    /**
     * 查询流程中的指定审批角色人员
     * @param processId 流程Id
     * @param groupId 审批角色Id
     * @return
     */
    List<String> queryFinanceUserIdByProcessId(@Param("processId") String processId, @Param("groupId") String groupId);

    /**
     * 修改指定表中的OA_ID
     * @param tableName 表名
     * @param oaId OAId
     * @param id SGUID
     */
    void modifyOaIdById(@Param("tableName") String tableName,
                        @Param("oaId") String oaId,
                        @Param("id") String id);
}
